﻿namespace MyCSharpWork3_2_
{
    /// <summary>
    /// 输出input以内的最大质数,并输出运行时间
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            //flaginput判断输入是否为数字，flagprime判断该数是否为素数
            bool flaginput = true, flagprime = true;
            //定义范围内最大素数
            int MaxPrimeNumber = 1;
            //定义范围
            int Max;
            do
            {
                //获取范围
                Console.Write("请输入一个较大的数:");
                string input = Console.ReadLine();
                //判断用户输入是否为数，不是则重新输入
                bool resultForTransfer = int.TryParse(input, out Max);
                if (resultForTransfer)
                    Console.WriteLine("Thanks");
                else { Console.WriteLine("Error"); flaginput=false; }
            } while (!flaginput);
            //获得程序开始时间
            DateTime Start = DateTime.Now;
            //对所有范围内奇数进行是否为素数的判断
            for (int i = 1; i<=Max; i+=2)
            {
                flagprime = true;
                //根据数学知识，只需判断小于i的开平方数是否能被i整除即可
                int standard = (int)System.Math.Sqrt(i);
                for (int j = 2; j<=standard; j++)
                {
                    if (i%j==0) flagprime=false;
                }
                //循环进行完即可获得最大素数
                if (flagprime)
                    MaxPrimeNumber=i;
            }
            //获得程序结束时间
            DateTime End = DateTime.Now;
            //获得程序运行时间绝对值timespan
            TimeSpan span = End-Start;
            string timespan = span.TotalSeconds.ToString();
            //输出结果
            Console.WriteLine($"小于{Max}的最大素数为：{MaxPrimeNumber}");
            Console.WriteLine($"程序执行时间为{timespan}s");
            Console.ReadKey();
        }
    }
}